package com.cskaoyan.dao;

import com.cskaoyan.vo.User;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * Mybatis 动态sql
 */
public interface UserDao {


    // 根据id查询用户
    User selectById(Integer id);

    // 根据可变条件查询用户
    List<User> selectUserSelective(User user);

    // 查询年龄大于指定数据的用户
    List<User> selectByAgeIf(@Param("age") Integer age);


    // 查询年龄大于指定数据的用户
    List<User> selectByAgeChooseWhen(@Param("age") Integer age);

    // trim 拼接和去除
    int updateUserByIdTestTrim(User user);

    // SET标签替代
    int updateUserByIdTestSet(User user);

    // sql-include 标签
    // 根据id查询用户
    User selectUserBySqlInclude(Integer id);


    // foreach 标签
    //    list
    List<User> selectListByIdList(@Param("idList") List<Integer> idList);

    List<User> selectListByIdList2(List<Integer> ids);

    //    array
    List<User> selectListByIdArrayWithoutParam(int[] ids);

    List<User> selectListByIdArrayWithParam(@Param("ids") int[] ids);

    // insert 多条记录 TODO
    Integer insertBatch(List<User> users);

    // selectKey 标签
    // 解释 在你执行sql语句的时候额外执行一条sql语句
    Integer insertUserRespId(User user);


    Integer insertUserRespIdWithParam(@Param("user") User user);


    Integer insertUserRespIdUseGeneratedKeys(User user);

    Integer insertUserRespIdUseGeneratedKeysWithParam(@Param("user") User user);
}
